summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/jni/emu_window/emu_window.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/src/main/jni/emu_window/emu_window.h')
-rw-r--r--src/android/app/src/main/jni/emu_window/emu_window.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/android/app/src/main/jni/emu_window/emu_window.h b/src/android/app/src/main/jni/emu_window/emu_window.h
new file mode 100644
index 000000000..b38087f73
--- /dev/null
+++ b/src/android/app/src/main/jni/emu_window/emu_window.h
@@ -0,0 +1,64 @@
+// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <memory>
+#include <span>
+
+#include "core/frontend/emu_window.h"
+#include "core/frontend/graphics_context.h"
+#include "input_common/main.h"
+
+struct ANativeWindow;
+
+class GraphicsContext_Android final : public Core::Frontend::GraphicsContext {
+public:
+ explicit GraphicsContext_Android(std::shared_ptr<Common::DynamicLibrary> driver_library)
+ : m_driver_library{driver_library} {}
+
+ ~GraphicsContext_Android() = default;
+
+ std::shared_ptr<Common::DynamicLibrary> GetDriverLibrary() override {
+ return m_driver_library;
+ }
+
+private:
+ std::shared_ptr<Common::DynamicLibrary> m_driver_library;
+};
+
+class EmuWindow_Android final : public Core::Frontend::EmuWindow {
+
+public:
+ EmuWindow_Android(InputCommon::InputSubsystem* input_subsystem, ANativeWindow* surface,
+ std::shared_ptr<Common::DynamicLibrary> driver_library);
+
+ ~EmuWindow_Android();
+
+ void OnSurfaceChanged(ANativeWindow* surface);
+ void OnTouchPressed(int id, float x, float y);
+ void OnTouchMoved(int id, float x, float y);
+ void OnTouchReleased(int id);
+ void OnGamepadButtonEvent(int player_index, int button_id, bool pressed);
+ void OnGamepadJoystickEvent(int player_index, int stick_id, float x, float y);
+ void OnGamepadMotionEvent(int player_index, u64 delta_timestamp, float gyro_x, float gyro_y,
+ float gyro_z, float accel_x, float accel_y, float accel_z);
+ void OnReadNfcTag(std::span<u8> data);
+ void OnRemoveNfcTag();
+ void OnFrameDisplayed() override {}
+
+ std::unique_ptr<Core::Frontend::GraphicsContext> CreateSharedContext() const override {
+ return {std::make_unique<GraphicsContext_Android>(m_driver_library)};
+ }
+ bool IsShown() const override {
+ return true;
+ };
+
+private:
+ InputCommon::InputSubsystem* m_input_subsystem{};
+
+ float m_window_width{};
+ float m_window_height{};
+
+ std::shared_ptr<Common::DynamicLibrary> m_driver_library;
+};